package cn.outsourcing.supermarket.service;

import cn.outsourcing.supermarket.dto.WxLoginMsgDTO;
import cn.outsourcing.supermarket.po.HiolabsUser;
import cn.outsourcing.supermarket.vo.WxUserVO;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 服务类
 *
 * @author gzkemays
 * @since 2021-10-20
 */
public interface HiolabsUserService extends IService<HiolabsUser> {
  /**
   * 微信登录
   *
   * <p>新旧用户都走同一个接口，最后返回 token、userinfo{id,username,nickname,gender,avatar} 和 is_new
   * <li>登陆时，小程序端传入 code，提供后端访问 {@link
   *     cn.outsourcing.supermarket.common.enums.WechatEnums#LOGIN_API}
   * <li>而后获取 openId 以及 session_key，进行对称解密 {@link
   *     cn.outsourcing.supermarket.common.utils.DataUtils#decryptWxEncrypted(String, String,
   *     String, String)}
   * <li>信息解密完毕后提取有关数据录入 {@link HiolabsUser} 对象进行返回。
   *
   * @param wxLoginMsg 小程序端传入的微信信息
   * @return 微信用户信息 {@link cn.outsourcing.supermarket.vo.WxUserVO}
   */
  WxUserVO login(WxLoginMsgDTO wxLoginMsg);

  /**
   * 根据 token 获取用户信息
   *
   * @param token 用户密钥
   * @return 用户信息
   */
  HiolabsUser getUserMsg(String token);

}
